home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / bp7bugs1.zip / BP7BUGS1.LST < prev    next >
File List  |  1993-01-09  |  10KB  |  224 lines

  1. BP7BUGS1.LST - Version 1 of BP 7.0 bug list
  2.  
  3. This is the first edition of my completely *un*official list of bugs in
  4. BP 7.0.  It's partly based on bugs in TP 6.0 that weren't fixed in the
  5. new release.  If you're interested in TP 6 bugs, look for TP6BUGS7.LST,
  6. the final release of my TP 6 bug list.
  7.  
  8. There are more limitations to this list than there were to the previous
  9. lists, because BP 7.0 is a lot bigger than TP 6.0.  I'm unable to test
  10. most Windows bugs, so they probably won't end up in this list.  Most of
  11. my work is in real mode, so there's a definite bias towards bugs there.
  12. Finally, I don't do much in TurboVision, and bugs there are a real pain
  13. to confirm, so they're not so likely to make it in.  (However, there are
  14. several TV bugs reported, and I've even included fixes for some.)
  15.  
  16. I'm sure there are errors in this list, and some things that I call bugs
  17. are "design limitations" or "as designed".  Don't rely on any of the
  18. fixes; none of them are official (even if they look like they come from
  19. Borland); only Borland can give you official fixes.  If you want a
  20. reliable list, write to Borland (in particular Zack Urlocker, at
  21. Compuserve address 76217,1053 or Internet address
  22. 76217.1053@compuserve.com) and complain.  Professional tools deserve
  23. professional support; a secret bug list, or one maintained by an
  24. amateur, is not professional support.
  25.  
  26. The list is very abbreviated;  if any of the items are too obscure, ask
  27. and I'll expand on them.  One abbreviation I've been asked about:
  28. "BASM" is the built-in assembler used in asm blocks.
  29.  
  30. The bugs reported here are gleaned from reports from dozens of people.
  31. In particular, Morten Welinder has found several new bugs and supplied
  32. fixes.
  33.  
  34. Bugs in the list are numbered in order from oldest to newest.  However,
  35. bugs 1 to 27 are taken from the last TP 6 list; those are more or less
  36. in newest to oldest order, because I was too lazy to reverse the list.
  37. If you're familiar with an older version of the list, check both the top
  38. for late breaking TP 6 bugs and the bottom for new BP 7 bugs.
  39.  
  40. I'd appreciate it if anyone sent me their own bug reports and bug list;
  41. I'll publicize it on Usenet, Fidonet and Compuserve. I'd also appreciate
  42. hearing about patches.  Please send demonstration code along with your
  43. report; I don't like to put bug reports here unless I can reproduce
  44. them.  If you don't have access to any of the sources above, I don't
  45. know how you came across this file; but I'll send you the latest version
  46. on diskette if you send me $10 (US or Canadian).  I'll also fill up the
  47. diskette with various utilities and things I've written; let me know if
  48. there's any particular type you're interested in.
  49.  
  50. Duncan Murdoch
  51.  
  52.  dmurdoch@mast.queensu.ca  (Internet address)
  53.  71631,122                 (Compuserve)
  54.  DJ Murdoch at 1:249/99.5. (Fidonet)
  55.  
  56.  337 Willingdon Ave.
  57.  Kingston, Ontario, Canada
  58.  K7L 4J3
  59.  
  60. ------ Leftover bugs from TP 6 --------
  61.  
  62. 1.  The string formatting routines get the 19th digit wrong on very
  63. large Comp numbers.
  64.  
  65. 2.  Actual heap allocation can be 511 bytes more than the maximum
  66. specified in the $M directive.
  67.  
  68. 3.  A window that has neither the wfGrow now wfMove flags set does not
  69. disable the cmResize command when it is active.  (A fix is available:
  70. see TWindow.fix in BP7BUGSn.ZIP).
  71.  
  72. 4.  The compiler doesn't detect overlapping case constants.  Only the
  73. first matching case is executed.
  74.  
  75. 5.  Single and Double types typed constants are not correctly
  76. initialized for absolute values smaller than 1.17xxxxE-38 respectively
  77. 2.22xxxxE-308 (their value wil be zero instead).  The lower limit of the
  78. dynamic range should be 1.5E-45 and 5.0E-324 respectively.
  79.  
  80. 6.  BASM has the ranges of legal values incorrect for IN, OUT, INT, ENTER,
  81. AAM, AAD instructions.
  82.  
  83. 7.  BASM allows references to nonexistent registers on the coprocessor,
  84. e.g. FADD ST, ST(123456).
  85.  
  86. 8.  The IDE doesn't properly single step across AAM xx and AAD xx
  87. instructions.
  88.  
  89. 9.  The coprocessor emulator doesn't handle special arguments like INF
  90. and NaN properly.  Quiet NaNs are treated as signalling NaNs, and
  91. operations on INF return NaN.
  92.  
  93. 10. TRect.Union and TRect.Intersect don't perform set operations.  If
  94. two rectangles don't intersect, TRect.Intersect always returns
  95. ((0,0),(0,0)); the union of that empty rectangle with any other
  96. rectangle always includes the point (0,0).
  97.  
  98. 11. The Str procedure rounds nnn.5 differently than either the Round or
  99. Trunc functions when printing reals with no decimal places.  In $N-
  100. mode, it is inconsistent; in $N+ mode, it consistently rounds up.
  101.  
  102. 12. The base type for a pointer type definition can't be a qualified
  103. identifier.
  104.  
  105. 13. Compile time evaluation of the ROUND() function is different than
  106. run-time evaluation in $N+ mode on numbers ending in .5.
  107.  
  108. 14. The coprocessor emulator doesn't properly emulate the FINCSTP and
  109. FDECSTP instructions in BASM.  (These aren't used by compiled Pascal
  110. code.)
  111.  
  112. 15. The coprocessor emulator doesn't respect the precision control bits.
  113.  
  114. 16. The SEG operator in BASM doesn't work on variables declared in the
  115. stack segment.
  116.  
  117. 17. Referencing fields of records in BASM in a WITH block doesn't add the
  118. base address.
  119.  
  120. 18. The instruction "IMUL AX, 16" (valid on an 80186+) is rejected by BASM.
  121. The equivalent "IMUL AX, AX, 16" does work (in $G+ mode).
  122.  
  123. 19. The coprocessor emulator does not respect the rounding bits internally
  124. or when storing results to Single or Double variables.
  125.  
  126. 20. The compiler won't allow the optional identifier in a variant record to
  127. be an already defined scalar type identifer.
  128.  
  129. 21. IN doesn't properly handle out of range values.  (What it does is to
  130. demote out of range scalars to byte, ignoring any high bits.)
  131.  
  132. 22. Writeln wipes out the status word in the coprocessor.
  133.  
  134. 23. You can allocate an array bigger than 65528 bytes on the heap; it may
  135. wrap around and trash whatever precedes it.
  136.  
  137. 24. The coprocessor emulator doesn't propagate NaNs the same way as a real
  138. coprocessor does.
  139.  
  140. 25. Complicated expressions involving Reals compiled $N+ will unnecessarily
  141. overflow the coprocessor stack.
  142.  
  143. 26. There are certain illegal Extended encodings that crash the debugger
  144. in TURBO and BP.
  145.  
  146. 27. Range checking shouldn't apply to the limits in a for loop.
  147.  
  148. ------- New bugs in BP 7 --------
  149.  
  150. 28. Coprocessor errors are reported with the address normalized, but the
  151. IDE can't find source lines with errors specified that way.  Use the
  152. command line compilers with /F ssss:oooo to find them.
  153.  
  154. 29. On a 386, a longint shift of 16 bits or more is unreliable. (A fix
  155. is available in NEWSHR.FIX.)
  156.  
  157. 30. On a 386, interrupt routines must explicitly save the extended
  158. registers EAX through to EDX or risk corrupting longint calculations and
  159. other programs.
  160.  
  161. 31. On a 386, longint calculations are unreliable in environments which
  162. don't preserve the extended registers.  So far, the only such
  163. environments that I've heard of are systems running Novell's
  164. non-dedicated file server (I don't know which version).  (A detector and
  165. protection scheme is available in TRASHSRC.ZIP.  A quick fix is just to 
  166. set Test8086=0 at the start of your program.)
  167.  
  168. 32. The DisposeNode procedure in the Outline unit neglects to dispose of
  169. the Text string. (A fix is available in OUTLINE.FIX.)
  170.  
  171. 33. Overflow checking $Q+ sometimes misses overflows in operations on
  172. bytes.
  173.  
  174. 34. The file dialog in STDDLG.PAS messes up directory changes.  (A fix
  175. is available in FILEDIAL.FIX.)
  176.  
  177. 35. Spurious compiler arithmetic overflow errors are generated in
  178. constant expressions containing products of negative numbers with zero.
  179.  
  180. 36. If a running program changes a file that's currently loaded in the
  181. IDE, when you exit you'll lose the IDE version no matter how you answer
  182. the dialog about which version to keep.
  183.  
  184. 37. The expression "Word(hi(wordvar))" doesn't zero-extend the high byte
  185. of wordvar to give a word, it gives the word from memory starting at the
  186. location of the high byte of wordvar, i.e. the high byte plus the low
  187. byte of the next variable.
  188.  
  189. 38. With the extended syntax $X+, asciiz character arrays that are
  190. fields in records passed as const parameters aren't handled properly by
  191. Writeln.  (This bug report clearly needs some work! Can anyone tell me
  192. exactly what triggers this one?)
  193.  
  194. 39. Coprocessor exceptions aren't handled properly in protected mode.  BP and
  195. TDX are likely to be aborted by the error.
  196.  
  197. 40. In TURBO.EXE (but not BP.EXE), ^KR gives a junk error message about the
  198. file being a device if it doesn't exist (after the correct message).
  199.  
  200. 41. The ATT400.BGI driver is apparently messed up.  According to reports (I
  201. haven't tested this one) the TP 6 driver works fine.
  202.  
  203. 42. When written vertically, the bitmap fonts are aligned differently from the
  204. stroked fonts.  The bitmaps are aligned with the bottom of the letters, the
  205. stroked fonts with the tops.  Horizontally, both are aligned with the tops.
  206.  
  207. 43. Typed constants that are local to assembler routines can't be watched in
  208. the IDEs or TD without explicitly giving the routine name as a prefix, e.g.
  209. MyAsmRoutine.MyConst.
  210.  
  211. 44. In protected mode, if you have any BGI drivers registered with
  212. RegisterBGIDriver then you must register them again if you call CloseGraph and
  213. want to call InitGraph again.
  214.  
  215. 45. Some versions of OS/2 come with a buggy mouse driver that won't allow
  216. programs run from the IDE under OS/2 to use the mouse.  A fix is supposed to
  217. be available from IBM.
  218.  
  219. 46. Longint constants given in decimal in BASM statements like "DD 666777"
  220. are truncated to 16 bits.  (Express it in hex, and things are fine!)
  221.  
  222. 47. Contrary to the online help, Release() does not work in protected mode.
  223. (This is documented in the Language Guide.)
  224.